package com.guomei.service;

import com.guomei.bean.Certificate;
import com.guomei.bean.certificate.vo.CertficateDTO;
import com.guomei.utils.PageData;
import com.guomei.utils.Result;

public interface CertificateService {
    /**
     * 创建证书
     * @param certificate 证书对象
     * @return 结果对象
     */
    Result<?> createCertificate(Certificate certificate);


    Result<?> selectByCondition(CertficateDTO certificate);

    /**
     * 根据ID获取证书
     * @param id 证书ID
     * @return 结果对象
     */
    Result<Certificate> getCertificateById(Long id);

    /**
     * 根据用户ID和考试ID获取证书
     * @param userId 用户ID
     * @param examId 考试ID
     * @return 结果对象
     */
    Result<Certificate> getCertificateByUserIdAndExamId(Long userId, Long examId);

    /**
     * 根据证书编号获取证书
     * @param certNo 证书编号
     * @return 结果对象
     */
    Result<Certificate> getCertificateByCertNo(String certNo);

    /**
     * 获取所有证书（分页）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果对象
     */
    Result<PageData<Certificate>> getAllCertificates(int pageNum, int pageSize);

    /**
     * 根据用户ID获取证书列表（分页）
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果对象
     */
    Result<PageData<Certificate>> getCertificatesByUserId(Long userId, int pageNum, int pageSize);

    /**
     * 更新证书信息
     * @param certificate 证书对象
     * @return 结果对象
     */
    Result<?> updateCertificate(Certificate certificate);

    /**
     * 删除证书
     * @param id 证书ID
     * @return 结果对象
     */
    Result<?> deleteCertificate(Long id);
}
